home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / pascal / encipher.zip / KEYGEN.PAS < prev   
Pascal/Delphi Source File  |  1986-01-21  |  1KB  |  65 lines

  1.  
  2. PROGRAM keygen; 
  3. {This program may be freely copied and modified.} 
  4. {$R+} 
  5. TYPE 
  6.    subrange1 = 1..128; 
  7.    subrange2 = 1..64; 
  8. VAR 
  9.    i: subrange1; 
  10.    j: subrange2; 
  11.    sum, keysum: INTEGER; 
  12.    subKey: ARRAY[1..128] OF INTEGER; 
  13.    transKey: ARRAY[1..64] OF INTEGER; 
  14.    datafile: TEXT; 
  15.  
  16.  
  17. PROCEDURE subKeygen; 
  18. BEGIN 
  19.    RANDOMIZE; 
  20.    FOR i:=1 TO 128 DO subKey[i]:=RANDOM(128); 
  21. END; 
  22.  
  23.  
  24. PROCEDURE swap(VAR left,right: INTEGER); 
  25. VAR 
  26.    tempStore: INTEGER; 
  27. BEGIN 
  28.    tempStore:=left; 
  29.    left:=right; 
  30.    right:=tempStore; 
  31. END; 
  32.  
  33. PROCEDURE transKeygen; 
  34. VAR 
  35.    r: INTEGER; 
  36. BEGIN 
  37.    RANDOMIZE; 
  38.    FOR j:=1 TO 64 DO transKey[j]:=j; 
  39.    FOR j:=1 TO 64 DO 
  40.       BEGIN 
  41.          r:=RANDOM(65); 
  42.          IF r = 0 THEN r:=1; 
  43.          swap(transKey[j],transKey[r]); 
  44.       END; 
  45. END; 
  46.  
  47.  
  48. BEGIN 
  49.    subKeygen; 
  50.    transKeygen; 
  51.    sum:=0; keysum:=0; 
  52.    FOR j:=1 TO 64 DO 
  53.       BEGIN 
  54.          sum:=sum+j; 
  55.          keysum:=transKey[j] + keysum; 
  56.       END; 
  57.    WRITELN('Sum =',sum,'  Keysum =',keysum); 
  58.    ASSIGN(datafile,'keyfile'); 
  59.    REWRITE(datafile); 
  60.    FOR i:=1 TO 128  DO WRITE(datafile,subKey[i],' '); 
  61.    WRITELN(datafile); 
  62.    FOR j:=1 TO 64 DO WRITE(datafile,transKey[j],' '); 
  63.    CLOSE(datafile); 
  64. END. 
  65.